/**
 * @file
 * @brief RTD：电源管理
 * @author
 * + 隐星魂 (Roy Sun) <xwos@xwos.tech>
 * @copyright
 * + Copyright © 2015 xwos.tech, All Rights Reserved.
 * > Licensed under the Apache License, Version 2.0 (the "License");
 * > you may not use this file except in compliance with the License.
 * > You may obtain a copy of the License at
 * >
 * >         http://www.apache.org/licenses/LICENSE-2.0
 * >
 * > Unless required by applicable law or agreed to in writing, software
 * > distributed under the License is distributed on an "AS IS" BASIS,
 * > WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * > See the License for the specific language governing permissions and
 * > limitations under the License.
 */

#include "board/std.h"
#include <xwos/osal/irq.h>
#include <xwos/osal/pm.h>
#include "Power_Ip.h"
#include "RTD/xwds/device.h"

static
void rtdpm_callback_resume(void * arg)
{
        XWOS_UNUSED(arg);
        xwds_pm_resume(&rtdxwds);
}

static
void rtdpm_callback_suspend(void * arg)
{
        XWOS_UNUSED(arg);
        xwds_pm_suspend(&rtdxwds);
}

static
void rtdpm_callback_wakeup(void * arg)
{
        XWOS_UNUSED(arg);
        Power_Ip_SetMode(&Power_Ip_aModeConfigPB[0]);
}

static
void rtdpm_callback_sleep(void * arg)
{
        XWOS_UNUSED(arg);
        Power_Ip_SetMode(&Power_Ip_aModeConfigPB[1]);
        xwos_cpuirq_enable_lc();
}

void rtdpm_init(void)
{
        xwos_pm_set_cb(rtdpm_callback_resume,
                       rtdpm_callback_suspend,
                       rtdpm_callback_wakeup,
                       rtdpm_callback_sleep,
                       NULL);
}
